/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.cesupa.cabcc.mb;

import br.cesupa.cabcc.entity.Cargo;
import br.cesupa.cabcc.entity.Membro;
import br.cesupa.cabcc.entity.Perfil;
import br.cesupa.cabcc.facade.CargoFacade;
import br.cesupa.cabcc.facade.MembroFacade;
import br.cesupa.cabcc.facade.PerfilFacade;
import br.cesupa.cabcc.util.FileUpload;
import java.util.ArrayList;
import java.util.List;
import javax.faces.model.SelectItem;

/**
 *
 * @author yuri
 */
public class AdministrarMembrosMB {

    private Membro membro;
    private String nomeCargo;
    private String nomePerfil;
    private String nomeFoto;
    private List<SelectItem> listCargos;
    private List<SelectItem> listPerfis;
    private List<SelectItem> listFotos;
    private FileUpload fileUpload = new FileUpload();

    /** Creates a new instance of AdministrarMembrosMB */
    public AdministrarMembrosMB() {
        preencheListCargos();
        preencheListPerfis();
        preencheListFotos();
    }

    public void novoMembro() {
        membro = new Membro();
        nomeCargo = "";
        nomePerfil = "";
        nomeFoto = membro.getFoto();
    }

    public void uploadFile(org.richfaces.event.UploadEvent event) {
        if (null != event.getUploadItem()) {
            fileUpload.setUploadedFile(event.getUploadItem());
            membro.setFoto(event.getUploadItem().getFile().getPath() + ".png");
        }
    }

    public void preencheListCargos() {
        if (CargoFacade.getListCargos() != null) {
            listCargos = new ArrayList<SelectItem>();
            for (Cargo c : CargoFacade.getListCargos()) {
                listCargos.add(new SelectItem(c.getNome(), c.getNome()));
            }
        }
    }

    public void preencheListPerfis() {
        if (PerfilFacade.getListPerfis() != null) {
            listPerfis = new ArrayList<SelectItem>();
            for (Perfil p : PerfilFacade.getListPerfis()) {
                listPerfis.add(new SelectItem(p.getPerfil(), p.getPerfil()));
            }
        }
    }

    public void preencheListFotos() {
        listFotos = new ArrayList<SelectItem>();
        listFotos.add(new SelectItem("/img/fotos/default-picture.png", "/img/fotos/default-picture.png"));
        listFotos.add(new SelectItem("/img/fotos/Breno.png", "/img/fotos/Breno.png"));
        listFotos.add(new SelectItem("/img/fotos/Carlos.png", "/img/fotos/Carlos.png"));
        listFotos.add(new SelectItem("/img/fotos/Emo.png", "/img/fotos/Emo.png"));
        listFotos.add(new SelectItem("/img/fotos/Guma.png", "/img/fotos/Guma.png"));
        listFotos.add(new SelectItem("/img/fotos/Joca.png", "/img/fotos/Joca.png"));
        listFotos.add(new SelectItem("/img/fotos/Russo.png", "/img/fotos/Russo.png"));
    }

    public void cadastrarMembro() {
        membro.setFoto(nomeFoto);
        membro.setCargo(CargoFacade.getCargoPorNome(nomeCargo));
        membro.setPerfil(PerfilFacade.getPerfilPorPerfil(nomePerfil));
        membro = MembroFacade.cadastrarMembro(membro);
        if (membro == null) {
            novoMembro();
        }
    }

    public void excluirMembro(){
        MembroFacade.excluirMembro(membro);
    }

    public void alterarMembro(){
        MembroFacade.atualizarMembro(membro);
    }

    /* sets e gets */
    public List<Membro> getListMembros() {
        return MembroFacade.getListMembros();
    }

    /**
     * @return the membro
     */
    public Membro getMembro() {
        return membro;
    }

    /**
     * @param membro the membro to set
     */
    public void setMembro(Membro membro) {
        this.membro = membro;
    }

    /**
     * @return the nomeCargo
     */
    public String getNomeCargo() {
        return nomeCargo;
    }

    /**
     * @param nomeCargo the nomeCargo to set
     */
    public void setNomeCargo(String nomeCargo) {
        this.nomeCargo = nomeCargo;
    }

    /**
     * @return the nomePerfil
     */
    public String getNomePerfil() {
        return nomePerfil;
    }

    /**
     * @param nomePerfil the nomePerfil to set
     */
    public void setNomePerfil(String nomePerfil) {
        this.nomePerfil = nomePerfil;
    }

    /**
     * @return the listCargos
     */
    public List<SelectItem> getListCargos() {
        return listCargos;
    }

    /**
     * @return the listPerfis
     */
    public List<SelectItem> getListPerfis() {
        return listPerfis;
    }

    /**
     * @return the listFotos
     */
    public List<SelectItem> getListFotos() {
        return listFotos;
    }

    /**
     * @return the nomeFoto
     */
    public String getNomeFoto() {
        return nomeFoto;
    }

    /**
     * @param nomeFoto the nomeFoto to set
     */
    public void setNomeFoto(String nomeFoto) {
        this.nomeFoto = nomeFoto;
    }
}
